package com.yckj.activechicken.business.hr.service;

import com.yckj.activechicken.business.hr.model.HrLeave;
import com.yckj.activechicken.business.hr.model.vo.HrLeaveVo;

import java.util.List;

/**
 * <p>
 * Title:com.yckj.activechicken.business.hr.service
 * </p>
 * <p/>
 * <p>
 * Description: 描述【请假管理业务处理接口】
 * </p>
 * <p/>
 * <p>
 * Copyright: Copyright (c) 2019
 * </p>
 * <p/>
 * <p>
 * Company: 英才汇硕信息技术有限公司
 * </p>
 *
 * @author zhoujy
 * @version 1.0
 * @created 2020/5/25 15:02
 */
public interface IHrLeaveService {
    /**
     * 添加请假单，草稿信息
     * @param hrLeave
     * @return
     */
    int addLeave(HrLeave hrLeave);

    /**
     * 修改请假单，草稿信息
     * @param hrLeave
     * @return
     */
    int modifyLeave(HrLeave hrLeave);

    /**
     * 添加请假单，并发起请假审批流程
     * @param hrLeave
     * @return
     */
    int addAndApplyLeave(HrLeave hrLeave);

    /**
     * 发起假单申请
     * @param hrLeave
     * @return
     */
    int applyLeave(HrLeave hrLeave);

    /**
     * 多条件查询假单信息列表
     * @param hrLeave
     * @return
     */
    List<HrLeave> queryLeaveList(HrLeave hrLeave);

    /**
     * 带条件查询待办列表
     * @param hrLeave
     * @return
     */
    List<HrLeaveVo> queryTodoLeaveList(HrLeave hrLeave);

    /**
     * 审批假单
     * @param hrLeaveVo
     * @return
     */
    int approvalLeave(HrLeaveVo hrLeaveVo);

    /**
     * 放弃请假申请
     * @param hrLeaveVo
     * @return
     */
    int giveUpLeave(HrLeaveVo hrLeaveVo);

    /**
     * 修改假单，之后重新发起申请
     * @param hrLeaveVo
     * @return
     */
    int modifyAndApplyLeave(HrLeaveVo hrLeaveVo);


    /**
     * 带条件查询已办列表
     * @param hrLeave
     * @return
     */
    List<HrLeaveVo> queryHistoryLeaveList(HrLeave hrLeave);
}
